Skip to content

fix(changelog): split entries mixing code fences with angle-bracket types#13727

Closed
devin-ai-integration[bot] wants to merge 3 commits into
mainfrom
devin/1773924466-fix-changelog-text
Closed

fix(changelog): split entries mixing code fences with angle-bracket types#13727
devin-ai-integration[bot] wants to merge 3 commits into
mainfrom
devin/1773924466-fix-changelog-text

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Description

Refs fern-api/docs#4342

Changelog entries that combine fenced code blocks (```java...```) with inline backtick spans containing angle-bracket types (e.g. `Consumer<String>`) get double-wrapped by sanitizeChangelogEntry — the function's backtick-parity tracking gets confused by code fences, causing it to produce `Consumer(`Consumer<String>`)` which breaks MDX parsing in the docs repo (<String> is interpreted as a JSX tag).

Changes Made

Split three affected entries so that code fences and angle-bracket types are processed independently by the sanitizer:

  • Java SDK v4.0.0 (line 46): Split the large WebSocket overhaul summary into two type: feat entries, separating the code fence from the Consumer<String> text
  • Java SDK v3.11.0 (line 1688): Split the collapse-optional-nullable summary so OptionalNullable<T> is in one entry and the code fence examples are in a second entry
  • Java SDK v0.10.1 (line 3211): Split the added list item so SyncPagingIterable<User> (which appeared between two code fences) starts a new list item

Testing

  • pnpm run check (biome) passes
  • Changelog generation pipeline run to verify the splits produce correct MDX output
  • Rendered changelog inspected to confirm split entries look acceptable

Human Review Checklist

  • Verify the v4.0.0 split doesn't lose context. The original entry was one cohesive description of the WebSocket overhaul. After the split, v4.0.0 renders as two (feat): bullet points — the second one ("Generic onMessage handler", "Binary WebSocket support", "Shared core types", etc.) loses the "Breaking change for WebSocket users only" context header.
  • Verify the v3.11.0 split reads naturally. The new second summary is "Example collapse-optional-nullable configuration and usage:" which is a bit artificial. Confirm this is acceptable in the rendered docs.
  • Verify the v0.10.1 added list split renders correctly. This splits an added list item (not a summary), so confirm the changelog generator handles multiple added items as expected.
  • Consider whether fixing the sanitizer is preferable. This is a workaround — the underlying bug in sanitizeChangelogEntry (not handling triple-backtick fences) still exists and will affect future entries that combine code fences with angle-bracket types in the same summary.

Link to Devin session: https://app.devin.ai/sessions/5151f683b2dd4b19b266c84cb1aa999a

The first changelog entry for v4.0.0 contained both a fenced code block
and later inline backtick spans with angle brackets (Consumer<String>).
The changelog sanitizer's backtick-parity tracking gets confused by code
fences, causing it to double-wrap the angle-bracket type — which breaks
MDX parsing in the docs repo (<String> is interpreted as a JSX tag).

Fix: split the single large summary into two separate feat entries so
the code fence and the Consumer<String> text are in different entries.

Co-Authored-By: unknown <>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Code review skipped — your organization's overage spend limit has been reached.

Code review is billed via overage credits. To resume reviews, an organization admin can raise the monthly limit in Settings → Usage.

Once credits are available, reopen this pull request to trigger a review.

Entries that combine fenced code blocks with inline backtick spans
containing angle brackets (e.g. Consumer<String>, OptionalNullable<T>,
SyncPagingIterable<User>) get double-wrapped by sanitizeChangelogEntry,
breaking MDX parsing in the docs repo.

Fix: split affected entries so code fences and angle-bracket types
are in separate summary blocks. This affects:
- Java SDK v4.0.0: Consumer<String> after code fence
- Java SDK v3.11.0: OptionalNullable<T> before code fences
- Java SDK v0.10.1: SyncPagingIterable<User> between code fences

Co-Authored-By: unknown <>
@devin-ai-integration devin-ai-integration Bot changed the title fix(changelog): split Java SDK 4.0.0 entry to avoid MDX parsing error fix(changelog): split entries mixing code fences with angle-bracket types Mar 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This PR is stale because it has been open 25 days with no activity. Remove stale label or comment or this will be closed in 5 days.

@github-actions github-actions Bot added the Stale This PR hasn't has any commits or comments in 25 days or more. label Apr 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This PR was closed because it has been inactive for 5 days after being marked stale.

@github-actions github-actions Bot closed this Apr 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Stale This PR hasn't has any commits or comments in 25 days or more.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants